From 1c544e4237eaf67657260f49aec0bf2118e69767 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Timm=20B=C3=A4der?= Date: Thu, 3 Mar 2016 13:04:58 +0100 Subject: [PATCH] Add GtkRevealer sizing tests https://bugzilla.gnome.org/show_bug.cgi?id=762996 --- testsuite/gtk/Makefile.am | 1 + testsuite/gtk/revealer-size.c | 153 ++++++++++++++++++++++++++++++++++ 2 files changed, 154 insertions(+) create mode 100644 testsuite/gtk/revealer-size.c diff --git a/testsuite/gtk/Makefile.am b/testsuite/gtk/Makefile.am index b6a7450c06..5fc1cf167d 100644 --- a/testsuite/gtk/Makefile.am +++ b/testsuite/gtk/Makefile.am @@ -73,6 +73,7 @@ TEST_PROGS += \ typename \ window \ displayclose \ + revealer-size \ $(NULL) if OS_UNIX diff --git a/testsuite/gtk/revealer-size.c b/testsuite/gtk/revealer-size.c new file mode 100644 index 0000000000..6c7cffcf01 --- /dev/null +++ b/testsuite/gtk/revealer-size.c @@ -0,0 +1,153 @@ +#include + +const int KEEP_HEIGHT = 1 << 0; +const int KEEP_WIDTH = 1 << 1; + +static void +keep_size (int direction, + guint transition_type, + gboolean animations) +{ + gboolean animations_before; + int min_height, min_width; + int min_child_width, min_child_height; + GtkRevealer *revealer = gtk_revealer_new (); + GtkWidget *child = gtk_button_new_with_label ("Some Text!"); + GtkSettings *settings = gtk_settings_get_default (); + + g_object_get (settings, "gtk-enable-animations", &animations_before, NULL); + g_object_set (settings, "gtk-enable-animations", animations, NULL); + + gtk_container_add (GTK_CONTAINER (revealer), child); + gtk_widget_show_all (GTK_WIDGET (revealer)); + + gtk_revealer_set_transition_type (revealer, transition_type); + + gtk_revealer_set_reveal_child (revealer, TRUE); + + gtk_widget_get_preferred_width (GTK_WIDGET (child), &min_child_width, NULL); + gtk_widget_get_preferred_height (GTK_WIDGET (child), &min_child_height, NULL); + + gtk_widget_get_preferred_width (GTK_WIDGET (revealer), &min_width, NULL); + gtk_widget_get_preferred_height (GTK_WIDGET (revealer), &min_height, NULL); + + g_assert_cmpint (min_width, ==, min_child_width); + g_assert_cmpint (min_height, ==, min_child_height); + + + gtk_revealer_set_reveal_child (revealer, FALSE); + gtk_widget_get_preferred_width (GTK_WIDGET (revealer), &min_width, NULL); + gtk_widget_get_preferred_height (GTK_WIDGET (revealer), &min_height, NULL); + + if (direction & KEEP_WIDTH) + g_assert_cmpint (min_width, ==, min_child_width); + else + g_assert_cmpint (min_width, ==, 0); + + if (direction & KEEP_HEIGHT) + g_assert_cmpint (min_height, ==, min_child_height); + else + g_assert_cmpint (min_height, ==, 0); + + g_object_set (settings, "gtk-enable-animations", animations_before, NULL); +} + + +static void +slide_right_animations () +{ + keep_size (KEEP_HEIGHT, GTK_REVEALER_TRANSITION_TYPE_SLIDE_RIGHT, TRUE); +} + +static void +slide_right_no_animations () +{ + keep_size (KEEP_HEIGHT, GTK_REVEALER_TRANSITION_TYPE_SLIDE_RIGHT, FALSE); +} + +static void +slide_left_animations () +{ + keep_size (KEEP_HEIGHT, GTK_REVEALER_TRANSITION_TYPE_SLIDE_LEFT, TRUE); +} + +static void +slide_left_no_animations () +{ + keep_size (KEEP_HEIGHT, GTK_REVEALER_TRANSITION_TYPE_SLIDE_LEFT, FALSE); +} + +static void +none_animations () +{ + keep_size (0, GTK_REVEALER_TRANSITION_TYPE_NONE, TRUE); +} + +static void +none_no_animations () +{ + keep_size (0, GTK_REVEALER_TRANSITION_TYPE_NONE, FALSE); +} + +static void +crossfade_animations() +{ + keep_size (KEEP_WIDTH | KEEP_HEIGHT, GTK_REVEALER_TRANSITION_TYPE_CROSSFADE, TRUE); +} + +static void +crossfade_no_animations () +{ + keep_size (KEEP_WIDTH | KEEP_HEIGHT, GTK_REVEALER_TRANSITION_TYPE_CROSSFADE, FALSE); +} + +static void +slide_down_animations () +{ + keep_size (KEEP_WIDTH, GTK_REVEALER_TRANSITION_TYPE_SLIDE_DOWN, TRUE); +} + +static void +slide_down_no_animations () +{ + keep_size (KEEP_WIDTH, GTK_REVEALER_TRANSITION_TYPE_SLIDE_DOWN, TRUE); +} + +static void +slide_up_animations () +{ + keep_size (KEEP_WIDTH, GTK_REVEALER_TRANSITION_TYPE_SLIDE_UP, TRUE); +} + +static void +slide_up_no_animations () +{ + keep_size (KEEP_WIDTH, GTK_REVEALER_TRANSITION_TYPE_SLIDE_UP, TRUE); +} + +int +main (int argc, char **argv) +{ + gtk_init (&argc, &argv); + g_test_init (&argc, &argv, NULL); + + g_test_add_func ("/sizing/revealer/slide_right_animations", slide_right_animations); + g_test_add_func ("/sizing/revealer/slide_right_no_animations", slide_right_no_animations); + + g_test_add_func ("/sizing/revealer/slide_left_animations", slide_left_animations); + g_test_add_func ("/sizing/revealer/slide_left_no_animations", slide_left_no_animations); + + g_test_add_func ("/sizing/revealer/none_animations", none_animations); + g_test_add_func ("/sizing/revealer/none_no_animations", none_no_animations); + + g_test_add_func ("/sizing/revealer/crossfade_animations", crossfade_animations); + g_test_add_func ("/sizing/revealer/crossfade_no_animations", crossfade_no_animations); + + g_test_add_func ("/sizing/revealer/slide_down_animations", slide_down_animations); + g_test_add_func ("/sizing/revealer/slide_down_no_animations", slide_down_no_animations); + + g_test_add_func ("/sizing/revealer/slide_up_animations", slide_up_animations); + g_test_add_func ("/sizing/revealer/slide_up_no_animations", slide_up_no_animations); + + return g_test_run (); +} -- 2.30.2